// pages/list/list.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 当前选中的分类索引
    currentCategoryIndex: 0,
    // 二级分类列表（根据一级分类动态生成）
    subCategories: [
      'PVC卡/异形卡',
      '标签',
      '吊牌',
      '纸杯纸碗',
      '水晶标',
      '广告扇',
      '门票/优惠券',
      '汽车座套',
      '广告帽定制'
    ],
    // 产品列表数据
    products: [],
    // 当前页码
    currentPage: 1,
    // 每页数量
    pageSize: 10,
    // 是否还有更多数据
    hasMore: true,
    // 是否正在加载
    loading: false,
    // 当前选中的分类名称
    currentCategory: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 从 videos 页面传递过来的参数
    const { category, categoryId } = options;
    
    if (category) {
      // 设置当前分类
      const index = this.data.subCategories.findIndex(item => item === category);
      if (index !== -1) {
        this.setData({
          currentCategoryIndex: index,
          currentCategory: category
        });
      }
      
      // 根据分类加载对应的产品数据（从第一页开始，重置列表）
      this.loadProductsByCategory(category, 1, true);
    } else {
      // 如果没有传入分类，默认加载第一个分类
      const defaultCategory = this.data.subCategories[0];
      this.setData({
        currentCategory: defaultCategory
      });
      this.loadProductsByCategory(defaultCategory, 1, true);
    }
    
    // 设置页面标题
    if (category) {
      wx.setNavigationBarTitle({
        title: category
      });
    }
  },

  /**
   * 分类切换事件
   */
  onCategoryTap(e) {
    const { index } = e.currentTarget.dataset;
    const category = this.data.subCategories[index];
    
    this.setData({
      currentCategoryIndex: index,
      currentCategory: category,
      currentPage: 1, // 重置页码
      hasMore: true,  // 重置加载状态
      products: []      // 清空列表
    });
    
    // 根据选中的分类加载产品（从第一页开始）
    this.loadProductsByCategory(category, 1, true);
  },

  /**
   * 根据分类加载产品数据（支持分页）
   * @param {String} category - 分类名称
   * @param {Number} page - 页码，从1开始
   * @param {Boolean} reset - 是否重置列表（true=重置，false=追加）
   */
  loadProductsByCategory(category, page = 1, reset = false) {
    // 如果正在加载，则不允许重复请求
    if (this.data.loading) {
      return;
    }

    // 如果没有更多数据且不是重置操作，则不加载
    if (!this.data.hasMore && !reset && page > 1) {
      return;
    }

    this.setData({
      loading: true
    });

    // TODO: 这里调用真实的API接口
    // wx.request({
    //   url: 'https://your-api.com/products',
    //   data: {
    //     category: category,
    //     page: page,
    //     pageSize: this.data.pageSize
    //   },
    //   success: (res) => {
    //     const newProducts = res.data.products || [];
    //     this.handleProductsData(newProducts, reset);
    //   },
    //   fail: (err) => {
    //     console.error('加载产品失败:', err);
    //     wx.showToast({
    //       title: '加载失败',
    //       icon: 'none'
    //     });
    //   },
    //   complete: () => {
    //     this.setData({
    //       loading: false
    //     });
    //   }
    // });

    // 模拟数据（实际项目中删除此部分，使用上面的真实接口）
    setTimeout(() => {
      console.log('加载分类产品:', category, '页码:', page);
      
      // 模拟不同分类的产品数据
      const mockProducts = this.getMockProducts(category, page);
      
      // 处理数据：如果是重置，则替换；如果是加载更多，则追加
      this.handleProductsData(mockProducts, reset);
      
      this.setData({
        loading: false
      });
    }, 500); // 模拟网络延迟
  },

  /**
   * 处理产品数据（重置或追加）
   */
  handleProductsData(newProducts, reset) {
    if (reset) {
      // 重置列表
      this.setData({
        products: newProducts,
        hasMore: newProducts.length >= this.data.pageSize,
        currentPage: 1
      });
    } else {
      // 追加到列表
      const allProducts = [...this.data.products, ...newProducts];
      this.setData({
        products: allProducts,
        hasMore: newProducts.length >= this.data.pageSize,
        currentPage: this.data.currentPage + 1
      });
    }

    // 如果没有更多数据，显示提示
    if (!this.data.hasMore && newProducts.length === 0 && this.data.products.length > 0) {
      wx.showToast({
        title: '没有更多数据了',
        icon: 'none',
        duration: 1500
      });
    }
  },

  /**
   * 获取模拟产品数据（仅用于演示，实际项目中删除）
   */
  getMockProducts(category, page) {
    // 模拟产品数据生成器
    const baseProducts = {
      'PVC卡/异形卡': [
        { id: 1, name: '门牌卡', image: 'https://via.placeholder.com/300x200', spec: '95*290MM' },
        { id: 2, name: '请勿打扰门牌', image: 'https://via.placeholder.com/300x200', spec: '80*220MM' },
        { id: 3, name: '已清洁房间', image: 'https://via.placeholder.com/300x200', spec: '80*220MM' },
        { id: 4, name: '门牌卡A', image: 'https://via.placeholder.com/300x200', spec: '90*280MM' },
        { id: 5, name: '门牌卡B', image: 'https://via.placeholder.com/300x200', spec: '85*270MM' }
      ],
      '标签': [
        { id: 6, name: '标签产品1', image: 'https://via.placeholder.com/300x200', spec: '定制尺寸' },
        { id: 7, name: '标签产品2', image: 'https://via.placeholder.com/300x200', spec: '标准尺寸' }
      ],
      '吊牌': [
        { id: 8, name: '吊牌产品1', image: 'https://via.placeholder.com/300x200', spec: '60*100MM' }
      ]
    };

    const categoryProducts = baseProducts[category] || [];
    const startIndex = (page - 1) * this.data.pageSize;
    const endIndex = startIndex + this.data.pageSize;
    
    // 生成模拟的分页数据
    const pageProducts = [];
    for (let i = 0; i < this.data.pageSize; i++) {
      const productIndex = startIndex + i;
      if (productIndex < categoryProducts.length) {
        // 如果真实数据还有，使用真实数据
        pageProducts.push({ ...categoryProducts[productIndex], id: categoryProducts[productIndex].id + page * 100 });
      } else {
        // 如果没有真实数据，生成模拟数据
        pageProducts.push({
          id: productIndex + page * 100,
          name: `${category}产品${productIndex + 1}`,
          image: 'https://via.placeholder.com/300x200',
          spec: '定制尺寸'
        });
      }
    }

    // 如果页码超过3页，返回空数组模拟没有更多数据
    if (page > 3) {
      return [];
    }

    return pageProducts;
  },

  /**
   * 产品点击事件
   */
  onProductTap(e) {
    const { id } = e.currentTarget.dataset;
    console.log('点击产品:', id);
    // TODO: 跳转到产品详情页
    console.log('跳转详情', id);
    wx.navigateTo({
      url: `/pages/details/details?id=${id}`
    });

  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作（下拉刷新）
   */
  onPullDownRefresh() {
    console.log('下拉刷新');
    
    // 重置数据
    this.setData({
      currentPage: 1,
      hasMore: true,
      products: []
    });

    // 重新加载当前分类的第一页数据
    const category = this.data.currentCategory || this.data.subCategories[this.data.currentCategoryIndex];
    this.loadProductsByCategory(category, 1, true);

    // 停止下拉刷新动画（延迟一下，让用户看到刷新效果）
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 800);
  },

  /**
   * 页面上拉触底事件的处理函数（上拉加载更多）
   */
  onReachBottom() {
    console.log('触底加载更多');
    
    // 如果没有更多数据或正在加载，则不执行
    if (!this.data.hasMore || this.data.loading) {
      return;
    }

    // 加载下一页数据
    const category = this.data.currentCategory || this.data.subCategories[this.data.currentCategoryIndex];
    const nextPage = this.data.currentPage + 1;
    
    this.loadProductsByCategory(category, nextPage, false);
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
